全名:ADO.NET(ActiveX Data Objects .NET)
簡單來說就是在.NET平台上,專門用以存取後端資料庫與進行資料操作的技術!!!!
更多介紹與解釋:ADO.NET 概觀
ADO.NET技術來取存資料庫,通常有兩種方式
1.精靈化的方式:平常我們在工具箱裡使用『資料』的控制項
透過精靈的選擇、拖曳、設定等方式就已經是在使用ADO.NET,快速且簡單
2.程式化的方式:透過Provider建立資料庫連接後選擇使用DataReader讀取、
使用DataSet操作與其他ExecuteNotQuery、ExecuteScalar執行方式,
全部透過程式一行一行編寫,功能與彈性較自由
SqlDataSourse其實就是被包裝過的DataSet...(屬性DataSourceMode預設就是DataSet)
精靈操作已經在前面文章已經使用很多次,今天主要來學習DataReader與大主角DataSet!
基本步驟:
1.Connect ─於資料庫之間建立起連結管道。
2.Command─下達SQL指令。
3.Execute─通知資料庫執行先前所下達之SQL指令,並回傳資料。
4.Close─關閉與資料庫之間的連結管道。
DataReader:一個簡單的資料流,提供順向唯讀的查看方式來使用裡面的資料,
就像個指標一樣在資料庫裡讀取資料直到執行結束連線關閉,不會占用大量記憶體較省資源
大概的用法就是:
protected void Page_Load(object sender, EventArgs e)
{
using (SqlConnection nowConnection = new SqlConnection(strConnection))//使用連接字串初始SqlConnection物件連接資料庫
{
nowConnection.Open();//開啟連線
using (SqlCommand command = new SqlCommand())
{
command.CommandText = "SQL";
command.Connection = nowConnection;//資料庫連接
SqlDataReader dr = command.ExecuteReader();//執行並回傳DataReader
if (dr.HasRows)//檢查是否有資料列
{
while (dr.Read())//嘗試讀取一筆資料列,並且回傳是否成功
{
WriteRow((IDataRecord)dr);//使用資料列
}
}
}
}
}
private void WriteRow(IDataRecord record)
{
HyperLink hl = new HyperLink();
hl.Text = record["Title"].ToString();//資料列集合中的資料
hl.ToolTip = record["Content"].ToString();
gv.Rows[4].Cells[1].Controls.Add(hl);
}
DataSet:ADO.NET的大魔王核心,它就是儲存在記憶中的一份資料庫複本,所以具有離線且可獨立自由來回操作的性質
等到需要時再傳回資料庫做更新,裡頭內涵就像是XML的資料模型,不只包含資料本身、甚至是多表的關聯。
基本用法:
DataSet ds;
SqlConnection nowConnection = new SqlConnection(strConnection)//使用連接字串初始SqlConnection物件連接資料庫
SqlCommand command = new SqlCommand("SQL指令", nowConnection);
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(command);
//傳入的是select字串:sqlDataAdapter.SelectCommand=new SqlCommand("SQL")
sqlDataAdapter.Fill(ds);
foreach (DataRow dr in ds.Tables["指定資料表"].Rows)
{
//這樣就可以自由檢索每個資料列內容
}
//如果要新增一筆資料
DataRow newDr = ds.Tables["資料表"].NewRow();
newDr["title"]="鐵人";
ds.Tables["資料表"].Rows.Add(newDr);
sqlDataAdapter.InsertCommand="SQL";//要記得寫好Insert指令
sqlDataAdapter.Update(ds,"指定資料表");
還有很多操作方式.....
各有各的好處,雖然DataSet很強大,但殺雞焉用牛刀,資料過大量時還會占用太多記憶體!
我在網路上蒐集到的幾篇比較文
希望對大家有幫助,整理如下
Web Form為求快速,可使用 DataReader直接處理資料來源
http://www.dotblogs.com.tw/mis2000lab/archive/2012/01/13/dataset_datareader_20120113.aspx
謝謝前輩總是替我做一些補充,真的幫助我很多學習的不足!!!!!